package com.scau402.system1.domain.bo;

import com.scau402.common.constant.InboundConstants;
import com.scau402.common.core.domain.AggregateRoot;
import com.scau402.common.core.domain.BaseBO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 商品入库单DTO
 * </p>
 *
 * @author
 * @since 2023-12-23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class WmsInboundOrderBO extends BaseBO implements AggregateRoot {

    /**
     * id
     */
    private Long id;

    /**
     * 入库类型
     */
    private String orderType;

    /**
     * 入库单编号
     */
    private String orderCode;

    /**
     * 订单批次
     */
    private String orderBatch;

    /**
     * 订单日期
     */
    private LocalDate orderDate;

    /**
     * 有效期
     */
    private LocalDate validDate;

    /**
     * 供应商主键ID
     */
    private Long supplierId;

    /**
     * 客户ID
     */
    private Long clientId;

    /**
     * 入库仓库主键ID
     */
    private Long desWarehouseId;

    /**
     * 加工厂主键ID
     */
    private Long processorId;

    /**
     * 还货入库关联出库单主键
     */
    private Long outboundOrderId;

    /**
     * 状态（0启用 1停用）
     */
    private String status;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 合并（0未被合并 1被合并 2合并后）
     */
    private String merged;

//    /**
//     * 结算周期
//     */
//    @TableField("settlement_cycle")
//    private Integer settlementCycle;

//    /**
//     * 出借天数
//     */
//    @TableField("lend_days")
//    private Integer lendDays;

    /**
     * 还货入库关联出库单号
     */
    private String outboundOrderCode;

    /**
     * 入库单明细
     */
    private List<WmsInboundOrderDetailBO> wmsInboundOrderDetailBOList;

    public String getOrderTypeValue() {
        switch (this.orderType) {
            case InboundConstants.INBOUND_ORDER_TYPE_BUY:
                return "采购入库";
            case InboundConstants.INBOUND_ORDER_TYPE_BORROW:
                return "借货入库";
            case InboundConstants.INBOUND_ORDER_TYPE_RETURN:
                return "还货入库";
            case InboundConstants.INBOUND_ORDER_TYPE_PROCESS:
                return "加工入库";
            default:
                return "未知入库类型";
        }
    }

}
